#ifndef DEFAULTPROCESSOR_H
#define DEFAULTPROCESSOR_H

#include "IGrayScaleProcessor.hpp"
#include <string>

class DefaultGrayScaleProcessor : public IGrayScaleProcessor {
public:
  std::tuple<std::string, std::string, std::vector<double>, int, int, double,
             double, double>
  GetGrayScaleArray(const cv::Mat &image, int x, int y, int width,
                    int height) override;

  // 声明 FindPeakPoints 函数
  std::tuple<int, int, int>
  FindPeakPoints(const std::vector<double> &grayValues);
  // 声明 CalculatePeakAreas 函数
  std::tuple<double, double, double>
  CalculatePeakAreas(const std::vector<double> &grayValues, int pc, int pt);

  std::tuple<double, double, double>
  CalculateGrayscale(const cv::Mat &mat, int x1, int y1, int x2, int y2, int l);

  void ShowMat(const cv::Mat &mat, int x1, int y1, int x2, int y2, int l,
               int pk1, int pk2, int mid);

  std::vector<double> GetGrayScaleArrayWithKernel(int x1, int y1, int width,
                                                  int height,
                                                  const cv::Mat &image, int k);
};

#endif // DEFAULTPROCESSOR_H
